package org.test.thrift.impl;

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TCompactProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.test.thrift.Test1;

public class ThriftClient {

	/**
	 * @param args
	 * @throws TException
	 */
	public static void main(String[] args) throws TException {
		/**
		 * transport（传输层，定义数据传输方式，可以为TCP/IP传输，内存共享或者文件共享等）
		 * 数据传输方式
		 * TSocket -阻塞式socker，TIOStreamTransport
		 * TFramedTransport – 以frame为单位进行传输，非阻塞式服务中使用。
		 * TFileTransport – 以文件形式进行传输。
		 * TMemoryTransport – 将内存用于I/O.java实现时内部实际使用了简单的ByteArrayOutputStream。
		 * TZlibTransport – 使用zlib进行压缩，与其他传输方式联合使用。当前无java实现。
		 */
		TTransport transport = new TFramedTransport(new TSocket("192.168.1.106", 9090));
		/**
		 * 数据格式：
		 * TBinaryProtocol – 二进制格式.
		 * TCompactProtocol – 压缩格式
		 * TJSONProtocol – JSON格式
		 * TSimpleJSONProtocol –提供JSON只写协议, 生成的文件很容易通过脚本语言解析。
		 * TDebugProtocol – 使用易懂的可读的文本格式，以便于debug
		 */
		TProtocol protocol = new TCompactProtocol(transport);
		// 根据thrift生成的客户端去调用
		Test1.Client client = new Test1.Client(protocol);
		transport.open();
		client.ping(123);
		transport.close();
	}

}
